package com.itheima.反射reflect.反射核心案例_使用场景;

import java.io.InputStreamReader;
import java.lang.reflect.Method;
import java.util.Properties;

public class Test3 {
    public static void main(String[] args) throws Exception{
        //构建一个properties读取本地文件src下的我在src下的.properties的配置信息进内存
        Properties properties = new Properties();
        //把本地文件加载到集合中
        properties.load(new InputStreamReader(Test3.class.getClassLoader().getResourceAsStream("我在src下的.properties"),"GBK"));
        //通过Class属性获取Class对象
        Class clazz = Class.forName(properties.getProperty("在src↓"));
        //反射获取要运行的方法对象
        Method method = clazz.getDeclaredMethod(properties.getProperty("我知道在src下"));
        //忽略安全检查
        method.setAccessible(true);
        //反射构建类的对象
        Object obj = clazz.newInstance();
        //反射调用方法(对象名.invoke)
        method.invoke(obj);
    }
}

class abc{
    public void d(){
        System.out.println("ddddd");
    }
    private void f(){
        System.out.println("我是私有方法下的字母'f'");
    }

}

class ghi{
    public void j(){
        System.out.println("JJJJJ");
    }
    private void k(){
        System.out.println("kkkkkkk");
    }
}